#include "Entier.h"


Entier::Entier(int valeur) : NonComplexe(INTEGER){
        this->valeur = valeur;
        this->type = INTEGER;
}

Constante* Entier::operator+(const Constante& c)const{

        switch(c.getType()){
                case Constante::INTEGER:
        return new Entier(this->valeur + static_cast<const Entier&>(c).valeur);
                break;
        }
}

Constante* Entier::operator*(const Constante& c)const{
        switch(c.getType()){
                case Constante::INTEGER:
        return new Entier(this->valeur * static_cast<const Entier&>(c).valeur);
                break;
        }
}

Constante* Entier::operator-(const Constante& c)const{
        switch(c.getType()){
                case Constante::INTEGER:
        return new Entier(this->valeur - static_cast<const Entier&>(c).valeur);
                break;
        }

}

Constante* Entier::operator/(const Constante& c)const{
        switch(c.getType()){
                case Constante::INTEGER:
//        return new Rationnel(this->valeur,static_cast<const Entier&>(c).valeur);
        return 0;
                break;
        }

}

Constante* Entier::operator%(const Constante& c)const{
   switch(c.getType()){
       case Constante::INTEGER:
        return new Entier(valeur % static_cast<const Entier&>(c).valeur);
   }
}
Constante* Entier::operator!()const{
    int tmp=1;
    for(int i=0;i<valeur-1;i++)
        tmp*=valeur-i;
    return new Entier(tmp);
}

Constante* Entier::operator-()const{
        return new Entier(-this->valeur);
}
